package com.chat.service;

import javax.websocket.Session;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.chat.enums.EventName;
import com.chat.enums.EventType;
import com.chat.po.Event;
import com.chat.po.User;
import com.chat.socketServer.OnlineUserManager;
import com.chat.utils.StrUtil;
import com.chat.utils.TimeUtil;

/**
 * 说明：用户业务相关类
 * 时间：2016年7月14日下午2:12:01
 * @author 杨建全
 */
public class UserService {
	/**
	 * 功能：用户登录接口
	 * 时间：2016年7月14日下午2:25:16
	 * @author 杨建全
	 * @param msgJson
	 * @param session
	 * @return
	 */
	public Event login(JSONObject msgJson, Session session) {
		String userName = msgJson.getString("userName");
		String password = msgJson.getString("password");
		String userId = msgJson.getString("userId");
		//非空校验
		if (StrUtil.hasEmpty(userName,userId)) {
			return new Event(EventName.LoginFailed,EventType.EVENT,"用户和密码为空！");
		}
		User loginUser = new User();
		loginUser.setId(userId);
		loginUser.setUsername(userName);
		loginUser.setPassword(password);
		loginUser.setSocketSession(session);
		OnlineUserManager.addOnlineUser(loginUser);
		return new Event(EventName.LoginSuccess,EventType.EVENT,"登录成功！");
	}
	/**
	 * 功能：发送公共消息
	 * 时间：2016年7月14日下午5:07:33
	 * @author 杨建全
	 * @param msgJson
	 * @param session
	 * @return
	 */
	public Event sendALLMsg(JSONObject msgJson, Session session) {
		String userName = msgJson.getString("userName");
		String userId = msgJson.getString("userId");
		String msg = msgJson.getString("msg");
		String msgType = msgJson.getString("msgType");
		if (StrUtil.hasEmpty(userName,userId,msg,msgType)) {
			return new Event(EventName.SendPublicMsgFailed,EventType.EVENT,"参数不能为空");
		}
		msgJson.put("time", TimeUtil.getTimeString());
		Event publicMsgEvent = new Event(EventName.OnPublicMsgRecived, EventType.EVENT, msgJson);
		OnlineUserManager.sendAll(JSON.toJSONString(publicMsgEvent));
		return new Event(EventName.SendPublicMsgSuccess,EventType.EVENT,"发送成功!");
	}

}
